package src.itheima04;

import src.itheima03.Student;

/*
    在JDK1.5之后，如果我们定义一个方法需要接受多个参数，并且多个参数类型一致，传入的时候不确定参数个数，我们可以对其简化.

        格式:
            修饰符 返回值类型 方法名称(数据类型 ... 变量名称) {
                //...
            }
        注意:
            1.可变参数的本质是数组
            2.含有可变参数的方法,调用时,可以传递数组,可以传递参数列表(多个参数之间用逗号隔开),还可以不传参数
            3.方法的可变参数,只能定义一个
            4.方法的可变参数,只能定义在参数列表的最后
 */
public class Demo04VarParams {
    public static void main(String[] args) {
        int[] arr = {10,20,30,40,50};
        int[] arr2 = {10,20,30,40,50,60};
        System.out.println(getSum(10,20));
        System.out.println(getSum(10,20,30));
        System.out.println(getSum(10,20,30,40));
        System.out.println(getSum(arr));
        System.out.println(getSum(arr2));
        System.out.println(getSum());
    }
    //错误: 方法的可变参数,只能定义一个
    /*public static void method(int ... a,String ... b) {

    }*/
    //正确的
    public static void show(int a,int ... b) {

    }
    //错误: 方法的可变参数,只能定义在参数列表的最后
    /*public static void print(Student... a, int b) {

    }*/

    //定义求和多个int数字之和的方法: 利用可变参数
    public static int getSum(int ... arr) {

        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = arr[i]+sum;

        }
        return sum;


    }

    //定义求int数组之和的方法
    /*public static int getSum(int[] arr) {
        int sum = 0;
        for(int i = 0;i<arr.length;i++) {
            sum += arr[i];
        }
        return sum;
    }*/
    //定义求2个int数字之和的方法
    /*public static int getSum(int a,int b) {
        return a + b;
    }*/
    //定义求3个int数字之和的方法
    /*public static int getSum(int a,int b,int c) {
        return a + b + c;
    }*/

    //定义求4个int数字之和的方法
    /*public static int getSum(int a,int b,int c,int d) {
        return a + b + c + d;
    }*/
}
